for _ in range(int(input())):
n=int(input())
a=list(map(int,input().split()))
t=[0]*(max(a)+1)
for i in range(n):
t[a[i]]+=1
c=0
for i in t:
if i >= 2: c+=1
if c<2: print(-1); continue
else:
cnt=0; b=[]
a=[(a[i], i) for i in range(n)]
a.sort()
i=0
while i < n:
if t[a[i][0]]>=2:
if cnt==0:
b+=[1]+[2]*(t[a[i][0]]-1);
else:
b+=[1]+(t[a[i][0]]-1)*[3];
cnt+=1
else: b+=[1]
i=len(b)
c=[0]*n
for i in range(n):
c[a[i][1]] = b[i]
print(*c); continue
print(-1)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int32_t main() {
int T;
cin>>T;
while(T--) {
int n;
cin>>n;
map<int,vector<int>>mp;
vector<int>arr(n);
for (int i=0;i<n;i++) cin>>arr[i];
for (int i=0;i<n;i++) {
mp[arr[i]].push_back(i);
}
int check=0;
for (auto x:mp) {
if (x.second.size()>=2) check++;
}
if (check<=1) cout<<-1<<endl;
else {
vector<int>out(n);
int c=0;
for (auto x:mp) {
if (c%2==0) {
for (int i=0;i<x.second.size();i++) {
if (i%2==0) {
out[x.second[i]]=1;
}
else out[x.second[i]]=2;
}
}
else {
for (int i=0;i<x.second.size();i++) {
if (i%2==0) {
out[x.second[i]]=1;
}
else out[x.second[i]]=3;
}
}
if (x.second.size()>1) c++;
}
for (auto y:out) cout<<y<<" ";
cout<<endl;
}
}
}
780C - Andryusha and Colored Balloons | 1153A - Serval and Bus |
1487C - Minimum Ties | 1136A - Nastya Is Reading a Book |
1353B - Two Arrays And Swaps | 1490E - Accidental Victory |
1335A - Candies and Two Sisters | 96B - Lucky Numbers (easy) |
1151B - Dima and a Bad XOR | 1435B - A New Technique |
1633A - Div 7 | 268A - Games |
1062B - Math | 1294C - Product of Three Numbers |
749A - Bachgold Problem | 1486B - Eastern Exhibition |
1363A - Odd Selection | 131B - Opposites Attract |
490C - Hacking Cypher | 158B - Taxi |
41C - Email address | 1373D - Maximum Sum on Even Positions |
1574C - Slay the Dragon | 621A - Wet Shark and Odd and Even |
1395A - Boboniu Likes to Color Balls | 1637C - Andrew and Stones |
1334B - Middle Class | 260C - Balls and Boxes |
1554A - Cherry | 11B - Jumping Jack |